using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.ModelConfiguration; using Sispe.Entities;

namespace Sispe.Repository.Mapping
{
    public class TRABAJADORMap : EntityTypeConfiguration<TRABAJADOR>
    {
        public TRABAJADORMap()
        {
            // Primary Key
            this.HasKey(t => t.Id);
            
            // Properties
            this.Property(t => t.Id)
                .HasDatabaseGeneratedOption(DatabaseGeneratedOption.None);

            this.Property(t => t.Zapato)
                .HasMaxLength(50);

            this.Property(t => t.GrupoSanguineo)
                .HasMaxLength(50);

            this.Property(t => t.NroCuenta)
                .HasMaxLength(350);

            this.Property(t => t.NroConstanciaEstudios)
                .HasMaxLength(50);

            /*this.Property(t => t.Observacion)
                .HasMaxLength(350);*/

            this.Property(t => t.NroCusp)
                .HasMaxLength(350);

            this.Property(t => t.AutogeneradoEsSalud)
                .HasMaxLength(350);

            this.Property(t => t.Edad)
                .HasMaxLength(50);

            this.Property(t => t.PaisEmisor)
                .HasMaxLength(350);

            this.Property(t => t.Nacionalidad)
                .HasMaxLength(350);

            this.Property(t => t.CondicionDomicilio)
                .HasMaxLength(350);

            this.Property(t => t.Talla)
                .HasMaxLength(5);

            this.Property(t => t.NivelEstudios)
                 .HasMaxLength(50);

            this.Property(t => t.ComentarioNivel)
                .HasMaxLength(350);

            // Table & Column Mappings
            this.ToTable("TRABAJADOR");
            this.Property(t => t.Id).HasColumnName("Id");
            this.Property(t => t.IdUbigeo).HasColumnName("IdUbigeo");
            this.Property(t => t.Zapato).HasColumnName("Zapato");
            this.Property(t => t.GrupoSanguineo).HasColumnName("GrupoSanguineo");
            this.Property(t => t.IdReferencia).HasColumnName("IdReferencia");
            this.Property(t => t.Recomendable).HasColumnName("Recomendable");
            this.Property(t => t.IdRegimenPensionario).HasColumnName("IdRegimenPensionario");
            this.Property(t => t.IdSocio).HasColumnName("IdSocio");
            this.Property(t => t.IdBanco).HasColumnName("IdBanco");
            this.Property(t => t.NroCuenta).HasColumnName("NroCuenta");
            this.Property(t => t.NroConstanciaEstudios).HasColumnName("NroConstanciaEstudios");
            this.Property(t => t.Observacion).HasColumnName("Observacion");
            this.Property(t => t.NroCusp).HasColumnName("NroCusp");
            this.Property(t => t.Sindicato).HasColumnName("Sindicato");
            this.Property(t => t.AutogeneradoEsSalud).HasColumnName("AutogeneradoEsSalud");
            this.Property(t => t.Edad).HasColumnName("Edad");
            //this.Property(t => t.FechaIngreso).HasColumnName("FechaIngreso");
            this.Property(t => t.Talla).HasColumnName("Talla");
            this.Property(t => t.IdRural).HasColumnName("IdRural");
            this.Property(t => t.IdEstudios).HasColumnName("IdEstudios");
            //this.Property(t => t.IdCargo).HasColumnName("IdCargo");
            this.Property(t => t.PaisEmisor).HasColumnName("PaisEmisor");
            this.Property(t => t.Nacionalidad).HasColumnName("Nacionalidad");
            this.Property(t => t.CondicionDomicilio).HasColumnName("CondicionDomicilio");
            this.Property(t => t.IdUbicacionTrabajador).HasColumnName("IdUbicacionTrabajador");
            this.Property(t => t.Hijos).HasColumnName("Hijos");
            this.Property(t => t.NivelEstudios).HasColumnName("NivelEstudios");
            this.Property(t => t.ComentarioNivel).HasColumnName("ComentarioNivel");

            // Relationships
            this.HasRequired(t => t.BANCO)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdBanco);
            /*this.HasRequired(t => t.ESTUDIO)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdEstudios);*/
            this.HasRequired(t => t.PERSONA)
                .WithOptional(t => t.TRABAJADOR);
            this.HasRequired(t => t.REFERENCIA)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdReferencia);
            this.HasRequired(t => t.REGIMEN_PENSIONARIO)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdRegimenPensionario);
            this.HasRequired(t => t.RURAL)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdRural);
            this.HasRequired(t => t.SOCIO)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdSocio);
            this.HasRequired(t => t.UBICACION_TRABAJADOR)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdUbicacionTrabajador);
            this.HasRequired(t => t.UBIGEO)
                .WithMany(t => t.TRABAJADORs)
                .HasForeignKey(d => d.IdUbigeo);
            //this.HasRequired(t => t.USUARIO)
            //    .WithOptional(t => t.TRABAJADOR);

        }
    }
}
